package com.dyz.swordFingerOffer;

/**
 * @author: daiyizheng
 * @date: 2021/5/30 19:38
 * @description:
 */
public class IsNumeric20 {
    public boolean IsNumeric(String s){
        //判断是否为空数组
        if(s == null || s.length()==0){
            return false;
        }
        boolean num = false;
        boolean dot = false;
        boolean e = false;
        char[] chars = s.trim().toCharArray();
        for(int i=0; i<chars.length;i++){
            if(chars[i]>='0' && chars[i]<='9'){
                num = true;
            }else if(chars[i]=='.'){
                //.之前不能出现. e
                if(dot || e){
                    return false;
                }
                dot = true;
            }else if(chars[i]=='e' || chars[i]=='E'){
                //e之前不能出现e 必须是数字 123e10
                if(e||!num){
                    return false;
                }
                e = true;
                //12e 12e+ 之后也有数字
                num = false;
            }else if(chars[i]=='+'|| chars[i]=='-'){
                //+ - 第一个位置 或者e后面的第一个位置
                if(i!=0&&chars[i-1]!='e'&&chars[i-1]!='E'){
                    return false;
                }
            }else { //出现其他字符
                return false;
            }
        }
        return num;
    }
}
